package ar.edu.caece.compiler.grammar;

import java.util.HashMap;
import java.util.Map;

import ar.edu.caece.compiler.error.ErrorManager;
import ar.edu.caece.compiler.grammar.attributes.Attribute;
import ar.edu.caece.compiler.grammar.attributes.AttributeFactoryConfig;

public abstract class TokenVisitor implements AttributeFactoryConfig {
	
	private Map<String,Attribute> attributes = new HashMap<String,Attribute>();
	
//	@Override
//	public void addAttribute(String name, Attribute attribute) {
//		attributes.put(name, attribute);				
//	}
//
//	@Override
//	public void clearAttributes() {
//		attributes.clear();				
//	}
//
//	@Override
//	public Attribute getAttribute(String name) {	
//		return attributes.get(name);
//	}
//
//	@Override
//	public Map<String, Attribute> getAttributes() {
//		return attributes;
//	}
//	
//	@Override
//	public void setAttributes(Map<String, Attribute> attributes) {
//		this.attributes = attributes;
//	}
//	
	@Override
	public void addInheretedAttribute(String name,Attribute attribute) {
		getAttributes().put(name, attribute);
	}
	
	@Override
	public void setInheretedAttributes(Map<String,Attribute> attributes) {
		this.attributes = attributes;
	}
	
	@Override
	public Attribute getAttribute(String name) {	
		return getAttributes().get(name);
	}

	public Recognizer defaultCase(TokenRecognizer llamador) throws Exception {
		ErrorManager.getInstance().manage(llamador, "EOF");
		return null;
	}
	
	public Map<String,Attribute> getAttributes() {
		return attributes;
	}
}
